

/**
* @file msg.c
* @brief 消息封装
* @author zshare
* @version v1.0
* @date 2022-03-11
* @history  
*/



#include "msg.h"


static u32 pack_header(u8 dst, u8 src, u8 prio, u8 type, msg_st *msg){
	msg->header.dst = dst;
	msg->header.src = src;
	msg->header.priority = prio;
	msg->header.type = type;
	return 0;
}

static u32 pack_body(u32 len, u8 *data, msg_st *msg){
	msg->body.len = len;
	pcalloc(msg->body.data, len, u8);
	memcpy(msg->body.data, data, len);
	return 0;
}


u32 pack_msg(u8 dst, u8 src, u8 prio, u8 type, u32 len, u8 *data, msg_st **pmsg)
{
	msg_st *msg = nil;
	msg = (msg_st *)calloc(1, sizeof(msg_st));

	pack_header(dst, src, prio, type, msg);
	pack_body(len, data, msg);
	(*pmsg) = msg;
	return 0;
}

void free_msg(msg_st *msg){
	pfree(msg->body.data);
	pfree(msg);
}





